applied patch from owen to get rid of accel map notifiers. changed things
authorTim Janik <timj@gtk.org>
Tue, 20 Nov 2001 23:43:03 +0000 (23:43 +0000)
committerTim Janik <timj@src.gnome.org>
Tue, 20 Nov 2001 23:43:03 +0000 (23:43 +0000)
commit9800f731e09e28defb46994ae11674d2553f0cc0
treef212fba144769eedf92541cd4dbe9843d24ed97a
parent9ea603f15dccb57a8b763fda35b929dbb70914d6
applied patch from owen to get rid of accel map notifiers. changed things

Tue Nov 20 21:25:08 2001  Tim Janik  <timj@gtk.org>

* applied patch from owen to get rid of accel map notifiers.
changed things to fix reentrancy and API as discussed on gtk-devel.

* gtk/gtkaccelgroup.[hc]:
(gtk_accel_group_finalize): unregister this accel group from all
accel map paths.
(accel_closure_invalidate): handle invalidation of closures by
disconnecting their accelerators.
(quick_accel_add): move closure connection and changed notification
into this function to reduce code duplication. don't emit change
notification on closurers without accelerators.
(quick_accel_remove): rewrite, do the exact opposite of quick_accel_add
for a GtkAccelGroupEntry.
(gtk_accel_group_connect): get rid of the accel_path_quark argument.
(gtk_accel_group_connect_by_path): new function to add accelerators
with an accel path.
(gtk_accel_group_disconnect_closure): new function, disconnect a
closure from of an accel group.
(gtk_accel_group_disconnect): loop over all closure for a accel_ley,
accel_mods pair and remove them.
(_gtk_accel_group_reconnect): new function that basically does
gtk_accel_group_disconnect_closure() and
gtk_accel_group_connect_by_path() once an accel path changed.
(gtk_accel_groups_disconnect_closure): remove this, there's
gtk_accel_group_disconnect_closure().

* gtk/gtkaccelmap.[hc]: keep list of accel groups per entry now,
nuke notifiers.
(_gtk_accel_path_is_valid): make this non-static for
gtkwidget.c and gtkaccelgroup.c assertions.
(gtk_accel_map_add_notifer): removed this function.
(gtk_accel_map_remove_notifer): same.
(_gtk_accel_map_add_group):
(_gtk_accel_map_remove_group): (un-)register accel groups, with
accel paths for correct propagation.
(gtk_accel_map_add_entry): return void.
(gtk_accel_map_lookup): return gboolean instead of GQuark.

* gtk/gtkitemfactory.c (gtk_item_factory_add_foreign): always
set accel_path on widgets.

* gtk/gtkwidget.[hc]:
(accel_path_changed): got rid of this, changes are handled by
accel maps internally now.
(_gtk_widget_set_accel_path): get things to work without notifiers.
(gtk_widget_list_accel_closures): list accel closures of a widget.

* gtk/gtkwindow.[hc]: rename ::accels_changed, to ::keys_changed.
25 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
docs/reference/gtk/gtk-sections.txt
docs/reference/gtk/tmpl/gtk-unused.sgml
docs/reference/gtk/tmpl/gtkaccelgroup.sgml
docs/reference/gtk/tmpl/gtkaccellabel.sgml
docs/reference/gtk/tmpl/gtkwidget.sgml
docs/reference/gtk/tmpl/gtkwindow.sgml
gtk/gtkaccelgroup.c
gtk/gtkaccelgroup.h
gtk/gtkaccellabel.c
gtk/gtkaccelmap.c
gtk/gtkaccelmap.h
gtk/gtkitemfactory.c
gtk/gtkmenu.c
gtk/gtkmenu.h
gtk/gtkwidget.c
gtk/gtkwidget.h
gtk/gtkwindow.c
gtk/gtkwindow.h